快速入门
导入依赖
1 |
|
配置文件
1 | server.port=8899 |
temperature参数用于控制生成文本的多样性。具体来说:
值越高,生成的文本越多样化,但也可能包含更多的随机性和不可预测的内容。 值越低,生成的文本越接近于确定性的结果,即生成的文本会更加一致和可预测。
启动类
1 |
|
controller
1 |
|
Spring AI的聊天模型
ChatClient接口
- ChatClient 是一个接口,定义了与聊天服务交互的客户端。这个接口主要用于创建聊天客户端对象,设置请求规范,以及发起聊天请求。
实现简单的对话
- 用户输入设置用户消息的内容,通过SpringBoot AI封装的方法向 AI 模型发送请求,以字符串形式返回 AI 模型的响应。
1 |
|
实现角色预设
配置默认角色
1
2
3
4
5
6
7
8
9
10
public class AiConfig {
public ChatClient chatClient(ChatClient.Builder builder) {
return builder
.defaultSystem("你是一个已经毕业多年,有丰富工作经验的Java工程师,你的名字是呵帅")
.build();
}
}编写controller
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class ChatDeepSeekController {
private ChatClient chatClient;
public String chatAi( String msg) {
return chatClient
.prompt()
.user(msg)
.call()
.content();
}
}
实现流式响应
非流式输出 call:等待大模型把回答结果全部生成后输出给用户;
流式输出stream:逐个字符输出,一方面符合大模型生成方式的本质,另一方面当模型推理效率不是很高时,流式输出比起全部生成后再输出大大提高用户体验。
- controller=
1
2
3
4
5
6
7
8
public Flux<String> chatAiStream( String msg){
return chatClient
.prompt()
.user(msg)
.stream()
.content();
}
ChatModel接口
- 在ChatModel接口中,带有String参数的call()方法简化了实际的使用,避免了更复杂的Prompt和 ChatResponse类的复杂性。
实现简单的对话
1 |
|
提示词
评价:难用,不如langchain4j
1 |
|
Function Calling函数调用
- 函数调用功能允许大语言模型在生成回答时触发预定义的外部函数,从而实现动态数据获取或业务逻辑操作(如查询数据库、调用 API 等)
自定义Function
1 |
|